#include "ai.h"
#include "motion.h"
#define BALLID 0
#define OWN_ROBOTID 1
#define ENEMY_ROBOTID 2
using namespace std;

int main()
{
	
	//nieuwe ai klasse maken
	robot_ai = new Ai();
	robot_motion = new Motion();
	
	Location ball;
	Location own_robot;
	Location enemy_robot;
	Location temp;


     while(1)
     {
        	//start of a new loop
     	//update the location of the ball, own and enemy robot
	     ball = Location(BALLID);
		own_robot = Location(OWN_ROBOTID);
	     enemy_robot = Location(ENEMY_ROBOTID);

		if( /* ball ligt ergens op het veld */ )
		{

		}   
		else if( /* de vijand heeft den bal */ )
		{
			//kop "element" maken en voorbereiden op minimax
			Element *KopElement;
			KopElement = new Element();
			KopElement->own_robot = Location(OWN_ROBOTID);
			KopElement->enemy_robot = Location(ENEMY_ROBOTID);
			KopElement->last_move = 5;
			KopElement->depth = 0;


			//minimax oproepen,
			//volgende locatie is het kind van KopElement en dit doorgeven aan het motion object
			robot_ai.minimax_d(KopElement, 0, move_size(KopElement));
			robot_motion.updateLocation(KopElement->child->own_robot); 	
		
			//belangrijk om alle dynamisch gemaakte Elementen terug te verwijderen
			del_element(KopElement);
		}
		else if( /* wij hebben den bal */ )
		{
			//kop "element" maken en voorbereiden op minimax
			Element *KopElement;
			KopElement = new Element();
			KopElement->own_robot = Location(OWN_ROBOTID);
			KopElement->enemy_robot = Location(ENEMY_ROBOTID);
			KopElement->last_move = 5;
			KopElement->depth = 0;

        }
        else if( 0 /* de vijand heeft den bal */ )
        {
             //kop "element" maken en voorbereiden op minimax
            Element *KopElement;
            KopElement = new Element();
            KopElement->own_robot = Location(OWN_ROBOTID);
            KopElement->enemy_robot = Location(ENEMY_ROBOTID);
            KopElement->last_move = 5;
            KopElement->depth = 0;

			//minimax oproepen,
			//volgende locatie is het kind van KopElement en dit doorgeven aan het motion object
			robot_ai.minimax_a(KopElement, 0, move_size(KopElement));
			robot_motion.updateLocation(KopElement->child->own_robot); 	
		
			//belangrijk om alle dynamisch gemaakte Elementen terug te verwijderen
			del_element(KopElement);
		}		

            if( 180 < hoek1  && hoek1 <= 360 )
            {
                hoek1 = (360 - (hoek1 -180))%360;
            }
            if( 180 < hoek2  && hoek2 <= 360 )
            {
                hoek2 = (360 - (hoek2 -180))%360;
            }

            KopElement->own_robot.setRotation(hoek1);
            KopElement->own_robot.setRotation(hoek2);


            //minimax oproepen,
            //volgende locatie is het kind van KopElement en dit doorgeven aan het motion object
            robot_ai->minimax_d(KopElement, 0, robot_ai->move_size(KopElement));

            //aanpassen van hoek naar robot co-systeem
            hoek1 = KopElement->child->own_robot.getRotation();
            if( 0 <= hoek1 && hoek1 <= 180 )
            {
                hoek1 = (hoek1 + 180)%360;
            }

            if( 180 < hoek1  && hoek1 <= 360 )
            {
                hoek1 = (360 - (hoek1 -180))%360;
            }
            KopElement->own_robot.setRotation(hoek1);


            /*hier klasse oproepen ??? */
            robot_motion->updateLocation(KopElement->child->own_robot);


            //belangrijk om alle dynamisch gemaakte Elementen terug te verwijderen
            robot_ai->del_element(KopElement);
        }
        else if( 1/* wij hebben den bal */ )
        {
            //kop "element" maken en voorbereiden op minimax
            Element *KopElement;
            KopElement = new Element();
            KopElement->own_robot = Location(OWN_ROBOTID);
            KopElement->enemy_robot = Location(ENEMY_ROBOTID);
            KopElement->last_move = 5;
            KopElement->depth = 0;


            //aanpassen van hoek naar mijn co-systeem
            int hoek1,hoek2;
            hoek1 = KopElement->own_robot.getRotation();
            hoek2 = KopElement->enemy_robot.getRotation();
            if( 0 <= hoek1 && hoek1 <= 180 )
            {
                hoek1 = (hoek1 + 180)%360;
            }
            if( 0 <= hoek2  && hoek1 <= 180 )
            {
                hoek2 = (hoek2 + 180)%360;
            }

            if( 180 < hoek1 && hoek1 <= 360 )
            {
                hoek1 = (360 - (hoek1 -180))%360;
            }
            if( 180 < hoek2 && hoek2 <= 360 )
            {
                hoek2 = (360 - (hoek2 -180))%360;
            }

            KopElement->own_robot.setRotation(hoek1);
            KopElement->own_robot.setRotation(hoek2);


            //minimax oproepen,
            //volgende locatie is het kind van KopElement en dit doorgeven aan het motion object
            robot_ai->minimax_a(KopElement, 0, robot_ai->move_size(KopElement));

            //aanpassen van hoek naar robot co-systeem
            hoek1 = KopElement->child->own_robot.getRotation();
            if( 0 <= hoek1 && hoek1 <= 180 )
            {
                hoek1 = (hoek1 + 180)%360;
            }

            if( 180 < hoek1 && hoek1 <= 360 )
            {
                hoek1 = (360 - (hoek1 -180))%360;
            }
            KopElement->own_robot.setRotation(hoek1);


            /*hier klasse oproepen ??? */
            robot_motion->updateLocation(KopElement->child->own_robot);


            //belangrijk om alle dynamisch gemaakte Elementen terug te verwijderen
            robot_ai->del_element(KopElement);
        }
    }
}
